![]() MULTIPLE SIZES OF WORDS ECC CODES IN AN SSD
专利摘要:
Methods for writing multiple codewords having multiple sizes into an electronic disk are disclosed. In one aspect, a method includes receiving a plurality of host data units for storage in a nonvolatile semiconductor memory. The method includes dividing the plurality of host data units from a plurality of useful data fields, a first data field having a first host data unit and a second data field having a portion of a second unit. host data. The method includes encoding the first useful field of data into a first code word having a first codeword size. The method includes encoding the second useful data field into a second codeword having a second codeword size, the second codeword size being different from the first codeword size. The method includes writing the first codeword and the second codeword into a first page of the nonvolatile semiconductor memory. Machine readable systems and media are also described. 公开号:FR3024271A1 申请号:FR1556408 申请日:2015-07-07 公开日:2016-01-29 发明作者:Richard David Barndt 申请人:HGST Netherlands BV; IPC主号:
专利说明:
[0001] SEVERAL SIZES OF ECC CODED WORDS IN A BACKGROUND SSD [0001] The technology according to the invention generally relates to electronic storage devices. Host data can be reliably stored in a data storage medium, such as flash memory, by encoding the host data into error correction code (ECC) code words and storing the codewords on the data storage medium. In response to a read command, the encoded words may be read from the data storage medium and decoded before returning the error free host data to the host. The size of a host data sector may vary depending on the host system. For example, in enterprise applications, the host sector size can be 536 bytes before adding ECC parity bits by comparison with the 512 bytes used in many consumer applications. Host sectors of different sizes can add complexity to a flash-based data storage system such as an electronic disk (SSD) and compromise its performance. SUMMARY [0002] The invention relates to a system and method for storing data in an electronic disk. In one aspect, a method may include receiving a plurality of host data units for storage in a flash memory, dividing the plurality of host data units into a plurality of useful data fields, a first data field comprising a first host data unit and a second payload field comprising a portion of a second host data unit, encode the first payload field into a first codeword having a first codeword size, code the second field useful data in a second codeword having a second codeword size, the second codeword size being different from the first codeword size, and writing the first codeword and the second codeword in a first page of the memory flash. In another aspect, a machine readable medium may store instructions which, when executed, implement the method described above. In another aspect, a system may include a flash memory, one or more data buffers configured to receive a plurality of host data units for storage in the flash memory, a controller configured to dividing the plurality of host data units into the one or more data buffers into a plurality of useful data fields, a first data field having a first host data unit and a second data field having a data field part of a second host data unit, and an encoder / decoder configured to encode the first useful data field into a first code word having a first code word size; for encoding the second useful data field into a second codeword having a second codeword size, the second codeword size being different from the first codeword size, the controller being further configured to write the first codeword and the second codeword in a first page of the flash memory. [0004] Other configurations of the technology according to the invention will emerge more clearly for those skilled in the art from reading the following detailed description, in which various configurations of the present technology are shown and described for illustrative purposes. As will be understood, the technology according to the invention may have other different configurations and several details may be modified in various other respects, without departing from the scope of the technology according to the invention. Therefore, the drawings and the detailed description should be considered as illustrative and not restrictive. [0002] BRIEF DESCRIPTION OF THE DRAWINGS [0005] A detailed description will be made with reference to the accompanying drawings. FIG. 1 illustrates a block diagram showing an exemplary series of code words including host data and coding. error correction, stored in several pages of a memory block according to aspects of the technology of the invention. FIG. 2 illustrates a block diagram showing the components of an electronic disk configured to store data received from a host system according to aspects of the technology of the invention. Figure 3 is a flowchart illustrating an exemplary process for storing data in an electronic disk according to aspects of the technology of the invention. DETAILED DESCRIPTION [0009] The purpose of the detailed description below is to describe various configurations of the technology according to the invention and is not intended to represent the only configurations in which the present technology can be implemented. The accompanying drawings are included here and form part of the detailed description. The detailed description includes specific details for a better understanding of the technology according to the invention. However, the present technology can be implemented without these specific details. In some examples, structures and components are represented in the form of a block diagram so that the concepts of the present technology are more clearly illustrated. Similar components are referenced with identical item numbers for ease of understanding. [0010] A flash memory is organized into blocks of flash memory cells. Each block 15 has a number of pages that can contain thousands of bits. Data is written to and read from / from flash memory in units of pages. However, a flash memory must be erased in block units. Data can be written into flash memory pages sequentially by means of flash memory devices. Sequential pages can be written to different flash memory devices through 20 separate channels, which allows sequential pages to be read in parallel by sending read commands to each respective flash memory device via the channels. separated. In this way, data recovery from a flash memory can be accomplished quickly. [0011] Some flash memory device manufacturers may configure flash memory pages that are sized to hold multiples of 512 bytes plus additional space for ECC overhead. However, in an enterprise SSD, the host data units (or sectors) to be stored on the SSD may not line up with the flash memory pages. For example, enterprise host data units can be more than 512 bytes, such as 528 bytes or 536 bytes, which can reduce the amount of space for ECC parity bits. In addition, the specified ECC format may be insufficient to achieve the desired number of program / erase cycles with the incorrect bit error rate required because the raw bit error rate of the flash memory increases with its wear. When host data units greater than 512 bytes are written to an SSD which is configured for 512-byte host data units, the SSD may stop before filling an entire page of the flash memory because undivided codewords will not fill the page, or divide some of the two-page coded words. The first solution can be expensive because it takes more flash memory to store the same amount of host data. The second solution may require reading two pages in order to retrieve the encoded word (s) for a single host data unit, which attaches resources in SSD 10 while waiting to retrieve both pages. . The ECC encoding can not be started until the entire codeword has been recovered from the flash memory. However, to maximize the use of the storage space of the flash memory, a code word can be cut on two pages of flash memory. For example, if a flash memory page has a size of 16k0 and each codeword has a size of 4kO plus the ECC parity bits, three complete codewords can be written in the flash page, but a fourth word Full encoded can not fit on the flash memory page because of the space occupied by the ECC parity bits of each codeword. Instead of leaving nothing left on the flash memory page, the next code word can be cut off on two pages of flash memory. In this example, 3k0 of the 4kO code word can be written into the flash memory page and the remaining lkO of the 4kO code word can be written into another flash memory page. However, if a code word is cut on two pages of flash memory, the decoder must wait for the two pages to be read, which may require putting the first part received in a buffer until the second part is received. For more advanced ECC systems, such as Low Density Parity (LDPC) control, the consequences may be more severe because the error characteristics of the two pages may require different processing. Therefore, it is not desirable for a code word to exceed page limits and it is desirable to maximize the use of the flash memory storage space. [0015] Instead of cutting on two pages an encoded word that does not fit on a page, the technology according to the invention divides the host data unit into two separate codewords and writes the two codewords. on adjacent pages. In this way, each code word does not exceed the page limits and the storage space of the flash memory can be maximized. [0016] A single ECC encoder / decoder may be designed to change coded word lengths using the same number of parity bits in the longest coded words and in the shortest coded words. For example, the same number of parity bits can be used for an IkO code word and for a 4k0 code word. The lkO coded word may be overprotected by the ECC because it may not require as many parity bits as those provided by the ECC; however, any extra space occupied by the excess parity bits is small compared to the gain obtained by reducing the number of unused bits in the page by having smaller additional codewords. Similarly, if the volume of all host data is contained in the longest codewords, the system performance with multiple codeword sizes will approach those of a system with fixed sizes using only the longest encoded words. , and the amplification of reading can also be minimized. [0017] FIG. 1 represents a block diagram illustrating a series of coded words given by way of example, stored on several pages of a flash memory block according to one aspect of the technology according to the invention. Each coded word 100a-1001, 102a-102b, 104a-104b, 106a-106b contains host data and error correction coding. The size of each codeword is selected from a list of possible code word sizes. For example, in Fig. 1, code words 100a-1001 have a first size, codewords 102a-102b have a second size, codewords 104a-104b have a third size, and codewords 106a-106b have a fourth size. The technology according to the invention generates and provides coded words 100a-1001, 102a-102b, 104a-104b, 106a-106b which occupy as much space as possible of each page of flash memory 120a-120d. For example, after writing code words 100a-100c in page 120a, the largest codeword size that will fit in the remaining space of page 120a is codeword 102a, which has the second size. By using a coded word of the size of the coded word 102a, as much space as possible of the flash memory page 120a-120d is used, unlike the case where the coded word 104a or the coded word 106a are written in the page 120a . Even if the combination of the 100a-100c and 102a coded words does not always occupy the entire page 120a, virtually all of page 120a is occupied. In some aspects, if the amount of space remaining in a particular page is smaller than the smallest codeword size, substantially the entire page is then occupied. FIG. 2 represents a block diagram illustrating the components of an electronic disk configured to store data received from a host system according to the aspects of the technology of the invention. A data storage system 200 includes a processor 201 (e.g., an SSD or data storage controller, a microprocessor, or the like), one or more storage devices 202 (e.g., flash memory devices, or other types of storage devices such as RAM, optical or magnetic media devices), input / output (I / O) interface 203, data buffer 204, configuration memory 205, and an ECC encoder / decoder 206. The data buffer 204 provides a hardware mechanism to facilitate the separation of the upstream portion of the SSD that interfaces with a host system, and the downstream portion of the SSD that interface with a storage device 202. Data is temporarily stored in the data buffer 204 when received for storage through the I / O interface 203 from a host system , or when are retrieved from the storage device 202 for transmission through the I / O interface 203 to the host system. In operation and for ease of storage, the data buffer 204 may be partitioned to temporarily divide the data stored therein and to create useful data fields sized appropriately for encoding into codewords for use by the downstream part of the SSD. In this way, the downstream part of the SSD is concerned with the coding of useful fields of data into codewords which will fit within the page boundaries of the storage device 202, and by the decoding of the codewords retrieved from the storage device 202 in the useful fields of data of the same size. On the other hand, the upstream part of the SSD is concerned with receiving and sending host data units. The data buffer 204 may be performed by a volatile or non-volatile memory, and may include one or more blocks, one or more pages, or other memory units. The functionality of the data buffer 204 and the storage device 202 may be implemented in the same storage device or distributed through a group of storage devices. In addition, the storage devices can be in any form such as flash memory, RAM, optical or magnetic media, or the like. In one example, the data buffer 204 is a reserved memory section (e.g., dynamically at run time) within one or more storage devices 202. [0003] 100221 The data storage system 200 may include a machine-readable medium (e.g., a non-transitory medium), storing instructions which, when executed, facilitate data transfer between the I / O interface 203, the data buffer 204, and the storage device 202, and other methods of transmitting and / or modifying the data described herein. In one example, the data storage system 200 receives a host data unit from a host device. The host data unit may contain one or more data sectors or other data units sized according to the host device. The host data units may each have the same size, and the size may be determined by the host system. The host system may include, for example, a microprocessor, an external memory, and / or peripheral components operating in conjunction with a data storage system that includes the storage device. Data received from a host may be stored in the storage device 202 by encoding the useful data field obtained from a host data unit into a code word, and storing the code word in the storage device 202. The host data unit 20 is received from the host in the data buffer 204, and the data buffer 204 stores the host data unit in a useful data field . The useful data field is encoded by the ECC encoder / decoder 206 and the data buffer 204 facilitates the filling of one or more codewords of one or more sizes from the useful data field. In some aspects, the available codeword sizes are based on the capabilities of the ECC encoder / decoder 206. For example, the ECC encoder / decoder 206 may be capable of encoding and decoding 1k0 encoded words, code words of 2k0, 3k0 coded words, and 4k0 coded words. In some aspects, the controller 201 indicates to the ECC encoder / decoder 206 the size of the code word to be used to encode a particular data field. In some aspects, the ECC encoder / decoder 206 can dynamically determine the size of codeword to be used depending on the size of the useful data field to be encoded. The rate of the ECC encoder / decoder 206 can be measured in codewords per second. For example, the ECC encoder / decoder 206 may take the same amount of time to encode a 4kO code word and a 1k0 codeword. In this case, it is desirable to have coded words of as large a size as possible, since the time required to code a 4kO 5 codeword is less than the time required to encode four codewords of 1k0. Alternatively, the rate of the ECC encoder / decoder 206 may be measured in bytes per second. For example, the ECC encoder / decoder 206 may take less time to encode an IkO codeword than to code a 4kO codeword. In this case, using smaller codewords is not always as efficient as using longer codewords, since there may be a codeword processing time. In the example described, the data storage system 200 can divide a received host data unit between two useful fields of data. The first useful field of data may be encoded in a first codeword and the second useful data field may be encoded in a second codeword. As described above, the size of the codeword to be encoded for each data field can be determined by the controller 201 and indicated to the ECC encoder / decoder 206. The construction of the code words can take place in the data buffer 204. The data buffer 204 may store host data received from the host; the data buffer 204 may store useful data fields created by the controller 201, and the data buffer 204 may store encoded codewords ready to be written in the storage device 202. [0026] After the Encoded words have been generated, the coded words can be written in one or more pages of the flash memory. In some aspects, the encoded words may be stored at respective addresses of a flash memory page. In one aspect, the encoded words can be stored sequentially. In the example described, the first codeword containing the first part of the received host data unit can be written to a first page and the second codeword containing the second part of the received host data unit can be written. in a second page. As described above, the first and second pages may be adjacent pages because the flash pages are written sequentially. The respective addresses at which each codeword is stored may be predetermined, or determined at runtime, depending on the code word length, the flash memory page size, and a start address of one. respective flash memory page and may be stored, for example, in a configuration memory 205. The configuration memory 205 may include a look-up table and, before storing or retrieving a code word from the device 202, the processor 201 can retrieve from the look-up table a respective address associated with the code word. In some aspects, the SSD controller maintains a virtual address of each host data unit stored in the flash memory. When host data is received for storage, the host data units are associated with respective logical addresses. The controller maps the respective logical addresses of the host data units to the virtual addresses of corresponding data codewords in which the host data units 10 were encoded. In this way, each host data unit can be found among the plurality of data coded words, once stored. The virtual address of each of the plurality of coded words is then mapped to a physical address in the flash memory. Accordingly, the SSD knows the location of each host data unit, even if that host data unit starts at a location within a code word (eg, at the beginning of the data position). , falls entirely within a single code word, exceeds code word limits, or exceeds the flash memory page limits. In one example, the mapping of the logical address includes an offset value for each of the first virtual addresses so that a host data unit can be indexed and retrieved from one or more useful fields of data encoded in a only one coded word or between several coded words. Similarly, the SSD may store the one or more coded words at respective offset addresses, the offset addresses being based on the coded word length, the flash memory page size, and a start address. a page of flash memory. Accordingly, the storage of the codewords in the storage device may consist of retrieving, from a lookup table, a respective offset address associated with a flash memory page of the storage device, and storing a word respective coded at the respective offset address. With reference to FIG. 2, the processor 201 can function as an SSD controller. The processor 201 may use the configuration memory 205 for temporary storage of data and information used to manage the data storage system 200. The processor 201 may include a plurality of internal components (not shown) such as a read-only memory, a flash memory component interface (for example, a multiplexer for managing an instruction and data transport along a serial connection to the storage device 202), an interface of S, error correction circuitry, and others. In some aspects, all of these controller elements 201 can be integrated into a single chip. In other aspects, these elements can be separated on their own printed circuit board. Processor 201 may also be configured to execute code or instructions to perform the operations and functionality described herein, manage a request stream and address mappings, and to execute calculations and generate commands. . The processor 201 is configured to control and control the operation of the system components 200. The processor may be a universal microprocessor, a microcontroller, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a programmable gate array (FPGA), a programmable logic device (PLD), a controller, a state machine, a gate logic, discrete hardware components, or a combination of the foregoing. One or more instruction sequences may be stored as firmware on a ROM within the processor 201 and / or its processor. One or more instruction sequences may be stored as software and read from a storage medium 205, a storage device 202, or received from a host device (for example, by via an I / O interface 203). A ROM, a storage medium 205, a storage device 202 represent examples of machine-readable or computer-readable media (e.g., non-transient media) on which instructions / code executable by a processor 201 and / or their processor can be stored. Machine-readable or computer-readable media may generally designate any medium used to provide instructions to the processor 201 and / or its processor, including volatile media, such as dynamic memory used for storage media. or for buffers within a processor 201, and nonvolatile media, such as electronic media, optical media, and magnetic media. In some aspects, the storage device 202 includes a flash memory. The processor 201 is configured to store, in the storage device 202, data received from a host device (e.g., previously described host sector data) in response to a write command sent from the host device. The processor 201 is further configured to read data stored in the storage device 202 and to transfer the read data to the host device in response to a read command sent from the host device. A host device may be any device configured to couple to the data storage system 200 through the I / O interface 203 and to store data in the data storage system 200. The host device may be a computer system such as a personal computer, a server, a workstation, a laptop, a personal digital assistant, a smartphone, and others. Alternatively, a host device may be an electronic device such as a digital camera, a digital audio player, a digital video recorder, and others. In some aspects, a configuration memory is a storage medium. In this regard, a storage medium 205 represents a volatile memory used for temporarily storing data and information used to manage a data storage system 200. According to one aspect of the technology of the invention, a storage medium 205 is a random access memory (RAM) such as double data rate (DDR) RAM. Other types of RAM may also be used to implement a storage medium 205. A memory 205 may be implemented using a single RAM module or multiple RAM modules. If a storage medium 205 is described as being distinct from a processor 201, those skilled in the art will note that a storage medium 205 may be incorporated into a processor 201 without departing from the scope of the technology according to the invention. Alternatively, a storage medium 205 may be a non-volatile memory such as a magnetic disk, a flash memory, a peripheral SSD, and the like. As illustrated in FIG. 2, the data storage system 200 may also include the I / O interface 203 (for example, a host interface). The I / O interface 203 is configured to be coupled to a host device, to receive data from the host device, and to send data to the host device. The I / O interface 203 may include electrical and physical connections for operatively coupling the host device 30 to the processor 201, for example, through the I / O interface of the processor 201. I / O interface 203 is configured to communicate data, addresses, and control signals between a host device and processor 201. Alternatively, the I / O interface of processor 201 may include and / or combined with the I / O interface 203. The I / O interface 203 may be configured to implement a standard interface, such as Serial-Attached SCSI (SAS), Fiber Channel Interface, PCI Express (PCIe), SATA, USB, and others. [0004] The I / O interface 203 may be configured to implement a single interface. Alternatively, the I / O interface 203 (and / or the I / O interface of the processor 201) can be configured to implement multiple interfaces, which are individually selectable using a configuration parameter selected by a user or programmed at the time of assembly. The I / O interface 203 may include one or more buffers 10 for buffering transmissions between a host device and the processor 201. The storage device 202 represents a nonvolatile memory device for to store data. According to aspects of the technology according to the invention, the storage device 202 comprises, for example, a NAND flash memory. The storage device 202 may comprise a single device or a single flash memory chip, as described in FIG. 2, or may comprise a plurality of flash memory devices or chips arranged in multiple channels. A flash memory is not limited to a particular capacity or configuration. For example, the number of physical blocks, the number of physical pages per physical block, the number of sectors per physical page, and the size of the sectors 20 may vary within the framework of the technology according to the invention. Figure 3 is a flowchart illustrating an exemplary process for storing data in an electronic disk according to aspects of the technology of the invention. The illustrative process shown in Figure 3 can be performed with a flash memory, which is an example of a nonvolatile semiconductor memory used in electronic data storage disks. Other types of nonvolatile semiconductor memory may be used with the present technology, especially those organized in finite length pages. Other types of nonvolatile semiconductor memory may include, without limitation, a restrictive random access memory (ReRAM or RRAM), a nonvolatile static random access memory (nvSRAM), a ferroelectric random access memory 30 (FeRAM), a random access memory magnetoresistive (MRAM), a torque transfer RAM (STTRAM), a phase change memory (PCM or PCRAM), a programmable metallization cell (PMC), a silicon-oxide-memory, nitride-oxidesilicon (SONOS), racetrack or domain wall (DWM) memory, and nano-RAM (NRAM). A plurality of host data units (e.g., sectors) for storage in nonvolatile semiconductor memory, e.g. flash memory, may be received by the controller 201 (302). Host data units may include one or more data sectors provided by a host system. As described above, the host data units can each have the same size. The multiple host data units are divided into a plurality of useful data fields, a first useful data field comprising a first host data unit and a second useful data field comprising a portion of a second unit of data. host data (304). In this regard, some of the useful fields of data include an entire host data unit and others include portions of host data units. Therefore, if the host data units are each the same size, the useful fields of data may not all be the same size. The first data field is encoded into a first codeword having a first codeword size (306). A second data field is encoded into a second codeword having a second codeword size, the second codeword size being different from the first code word size (308). As explained above, the first codeword size and the second code word size may depend on the capabilities of the ECC encoder / decoder 206. The first code word and the second codeword are written in a first page of the codeword. the flash memory (310). By dividing the second host data unit into several useful fields of data, a flash storage space can be maximized. For example, with reference to FIG. 1, if a page 120a of flash memory has a size of 16k0 and room 25 for an overload, it can store three 100a-100c coded words each having 4kO sizes plus bits. ECC parity. However, page 120a in the flash memory may not have enough remaining space for a fourth 4kO code word and for the ECC parity bits. On the other hand, it may have room for a 3kO 102a code word, plus the ECC parity bits. If the flash memory does not have enough remaining space for a 3kO code word, the controller 201 can then check whether there is enough room for a 1k0 code word. If there is not enough room for even the smallest codeword, a codeword of the maximum size, in this 4kO example, can then be written on the next page. Once the second code word 102a has been written in the first page 120a of the flash memory, a third data field containing the remaining portion of the second host data unit may be coded into a third codeword. 104a having a third size of code word. In the example above, the second codeword 102a has a size of 3k0, so that the third codeword 104a has a size of 1k0. The third codeword 104a is written in a second page 120b which is adjacent to the first page 120a. As described above, if the system receives a read command from a host data unit which is divided into two codewords 102a and 104a on two pages 120a and 120b, it can decode the two codewords 102a and 104a, and it does not read any other data on the first page 120a or on the second page 120b to access the requested host data unit. [0040] To have as many as possible of the largest codewords, the controller 201 can check whether one or more codewords of the maximum size can be written to the page. In this case, there is enough room for several codewords of the maximum size, so that three additional codewords 100d-100f of the first codeword size (in this example, 4kO) are written in the second page 120b . After writing a code word 104a having an IkO codeword size and 100d-100f codewords each having a 4kO code word size, the second page 120b, which has a size of 16k0, can not contain a another codeword of 3k0, but may contain a coded word 106a having a code word size of 2k0. As previously described, the next host data unit to be stored on the flash memory is divided into two useful data fields and coded into two codewords 106a and 106b. A coded word 106a is written in the second page 120b and the other codeword 106b is written in a third page 106b. [0041] The process continues using a number of coded words of the largest possible maximum size. In Fig. 1, codewords 100g-1001, 102b, 104b are written in pages 120c-120d until a page ends with a code word of the maximum codeword size. In this example, a fourth page 120d ends with a code word of the maximum codeword size 1001. A coded word of lkO will not fit in the fourth page 120d. [0005] The coded words 100a-1001, 102a-102b, 104a-104b, 106a-106b are written and placed in a coded word size scheme. In this case, the scheme is 4kB, 4kB, 4kB, 3kB, 1kB, 4kB, 4kB, 4kB, 2kB, 2kB, 4kB, 4kB, 4kB, 1kB, 3kB, 4kB, 4kB, 4kB. This same scheme can be repeated when encoding and storing the remaining host data units. Those skilled in the art will appreciate that the various blocks, modules, elements, components, methods, and illustrative algorithms described herein may be implemented in electronic hardware, computer software, or a combination of both. To illustrate this hardware and software interchangeability, various exemplary blocks, modules, elements, components, methods, and algorithms have been described generally above in terms of their functionality. The choice of the hardware or software implementation 10 of such a feature depends on the particular application and the design constraints imposed on the entire system. Those skilled in the art can implement the described functionality in various ways for each particular application. Various components and blocks can be arranged differently (for example, arranged in a different order, or partitioned in a different way) without departing from the scope of the invention's technology. [0043] It is clear that the specific order or hierarchy of the steps of the described processes is an illustration of exemplary approaches. According to design preferences, it should be understood that the specific order or hierarchy of process steps can be modified. Some of the steps can be performed simultaneously. The appended claims present the elements of the various steps in an illustrative order, and should not be construed as being limited to the specific order or hierarchy presented. The foregoing description is intended to enable the person skilled in the art to practice the various aspects described here. The foregoing description provides various examples of the technology according to the invention, and the present technology is not limited to these examples. Various modifications of these aspects will become apparent to those skilled in the art, and the generic principles defined herein can be applied to other aspects. Thus, the claims are not intended to be limited to the aspects set forth herein, but their scope must be extended in accordance with the language of the claims, in which a reference to an element in the singular does not mean "one and only one" unless not expressly stated, but rather "one or more". Unless otherwise indicated, the term "some" refers to one or more. Male pronouns (eg, sound) include the feminine gender and the neutral gender (e.g., sound and sound) and vice versa. Titles and subtitles, if they exist, are used solely for the sake of convenience and do not limit the invention. The predicates "configured for", "operable for" and "programmed for" do not imply any particular tangible or non-tangible change in a subject, but are designed to be used interchangeably. For example, a processor configured to control and control an operation or a component may also mean that the processor is programmed to control and manage. r control the operation or processor to control and control the operation. Similarly, a processor configured to execute code may be interpreted as a processor programmed to execute a code or operable to execute a code. A word such as an "aspect" does not imply that such an aspect is essential to the technology of the invention or that such an aspect applies to all configurations of the present technology. A description of an aspect may apply to all configurations, or to one or more configurations. One aspect may provide one or more examples. A word such as an aspect may designate one or more aspects and vice versa. A term such as an "embodiment" does not imply that such an embodiment is essential to the technology according to the invention or that such an embodiment applies to all configurations of the technology according to the invention. the invention. A description of one embodiment may be applicable to all embodiments, or to one or more embodiments. One embodiment may provide one or more examples. A term such as an "embodiment" may designate one or more embodiments and vice versa. A word such as a "configuration" does not imply that such a configuration is essential to the technology according to the invention or that such a configuration applies to all configurations of the technology according to the invention. A configuration description may apply to all configurations, or to one or more configurations. A configuration can provide one or more examples. A word such as a "configuration" may designate one or more configurations and vice versa. The word "exemplary" is used here to mean "serve as an example or illustration." Any aspect or design described herein as "exemplary" should not necessarily be construed as preferred or advantageous over other aspects or designs. All structural and functional equivalents of the elements of the various aspects described in this specification which are known or will become known to those skilled in the art are expressly incorporated herein by reference and are intended to be within the scope of the claims. In addition, no element described herein is intended to be dedicated to the public, whether such a description is explicitly developed or not in the claims. Nothing in the claims shall be construed in accordance with 35 USC §112, sixth paragraph, unless the element is expressly described using the term "means intended for" or, in the case of a claim of the method, unless the element is described using the term "step of". In addition, to the extent that the terms "include", "have", or others are used in the description or in the claims, such terms are intended to be inclusive similarly to the term "understand", as "to understand" is interpreted when it is used as a transitional word in a claim. -17-
权利要求:
Claims (21) [0001] REVENDICATIONS1. A method for storing data in an electronic disk, the method comprising the steps of: receiving a plurality of host data units for storage in a nonvolatile semiconductor memory; dividing the plurality of host data units into a plurality of useful data fields, a first data field having a first host data unit and a second data field having a portion of a second host data unit; encoding the first useful data field into a first codeword having a first code word size; encoding the second useful field of data into a second codeword having a second codeword size, the second codeword size being different from the first codeword size; and writing the first codeword and the second codeword into a first page of the nonvolatile semiconductor memory. [0002] The method of claim 1, further comprising the steps of: encoding a set of useful data fields into a plurality of codewords having the first codeword size, the set of useful data fields having two useful fields one or more of the plurality of useful fields of data; and writing the plurality of codewords having the first coded word size to the first page of the nonvolatile semiconductor memory. 25 [0003] The method of claim 1, wherein a third useful data field comprises a remaining portion of the second host data unit, the method further comprising the steps of: dividing a remaining portion of the second host data unit into a third useful field of data; - encoding the third useful field of data into a third codeword having a third codeword size, the third codeword size being different from the first codeword size and the second codeword size; and writing the third code word into a second page of the nonvolatile semiconductor memory. [0004] The method of claim 3, wherein the first page and the second page are in sequential order in the nonvolatile semiconductor memory. 10 [0005] The method of claim 3, wherein the second page comprises three codewords each having a different size of code word. [0006] The method of claim 1, wherein a plurality of codewords are written and placed in a code word size repetition pattern across a plurality of pages of the nonvolatile semiconductor memory. [0007] The method of claim 1, wherein the first code word size and the second code word size are selected from a plurality of code word sizes. [0008] The method of claim 1, wherein the first codeword and the second codeword further comprise a number of parity bits, the number of parity bits in the first codeword being the same as the number of parity bits in the second codeword. [0009] The method of claim 1, wherein the step of dividing the plurality of host data units into the plurality of useful data fields comprises: allocating an amount based on a code word size to be written to the non-volatile semiconductor memory. [0010] A system, comprising: a nonvolatile semiconductor memory; One or more data buffers configured to receive a plurality of host data units for storage in the nonvolatile semiconductor memory; a controller configured to: divide the plurality of host data units in the one or more data buffers into a plurality of useful data fields, a first data field having a first host data unit and a second field useful data comprising part of a second host data unit; and an encoder / decoder configured to: encode the first useful field of data into a first code word having a first code word size; and encode the second useful field of data into a second codeword having a second codeword size, the second codeword size being different from the first code word size, the controller further being configured to write the first codeword and the second word encoded in a first page of the nonvolatile semiconductor memory. [0011] The system of claim 10, wherein the encoder / decoder is further configured to encode a set of useful data fields into a plurality of encoded words having the first encoded word size, the set of useful data fields comprising two or more useful fields of data of the plurality of useful data fields, and the controller being further configured to write the plurality of codewords having the first codeword size in the first page of the nonvolatile memory to driver. [0012] The system of claim 10, wherein a third data field comprises a remaining portion of the second host data unit, the controller further configured to divide a remaining portion of the second host data unit into a third useful data field, the encoder / decoder being further configured to encode the third useful data field into a third codeword having a third codeword size, the third code word size being different from the first codeword size and the second codeword size, and the controller further configured to write the third codeword into a second page of the non-volatile semiconductor memory. [0013] The system of claim 12, wherein the first page and the second page are in sequential order in the nonvolatile semiconductor memory. [0014] The system of claim 12, wherein the second page comprises three code words each having a different size of code word. 10 [0015] The system of claim 10, wherein a plurality of codewords are written and placed in a coded word size repetition pattern across a plurality of pages of the nonvolatile semiconductor memory. [0016] The system of claim 10, wherein the first code word size and the second code word size are selected from a plurality of code word sizes. [0017] The system of claim 16, wherein the plurality of coded word sizes is dependent on the capacity of the encoder / decoder. 20 [0018] The system of claim 10, wherein the first codeword and the second codeword further comprise a number of parity bits, the number of parity bits in the first codeword being the same as the number of parity bits in the second codeword. [0019] The system of claim 10, wherein the step of dividing the plurality of host data units into the plurality of useful data fields comprises: assigning an amount based on a code word size to be written to nonvolatile semiconductor memory. [0020] 20. A machine-readable medium on which are stored instructions which, when executed, implement a method, the method comprising the following steps: [0021] Receiving a plurality of host data units for storage in a nonvolatile semiconductor memory; dividing the plurality of host data units into a plurality of useful data fields, a first data field having a first host data unit and a second data field having a portion of a second host data unit ; encoding the first useful data field into a first codeword having a first code word size; encoding the second useful field of data into a second code word having a second codeword size, the second code word size being different from the first encoded word size; and writing the first codeword and the second codeword into a first page of the nonvolatile semiconductor memory. -22-
类似技术:
公开号 | 公开日 | 专利标题 FR3024271A1|2016-01-29|MULTIPLE SIZES OF WORDS ECC CODES IN AN SSD KR102128471B1|2020-06-30|List decoding method for polar codes and memory system adopting the same US8527849B2|2013-09-03|High speed hard LDPC decoder US20150242309A1|2015-08-27|Systems and methods for storage compression FR3028656A1|2016-05-20| US9875153B2|2018-01-23|Validation bits and offsets to represent logical pages split between data containers US9971517B2|2018-05-15|Accelerated non-volatile memory recirculation processing US20190132010A1|2019-05-02|Method of operating decoder for reducing computational complexity and method of operating data storage device including the decoder US10615824B2|2020-04-07|Diagonal anti-diagonal memory structure US20180129563A1|2018-05-10|Memory system performing error correction of address mapping table US20200125289A1|2020-04-23|Implementing a mapping between data at a storage drive and data blocks at a host US20210034301A1|2021-02-04|System and method for flash storage management using multiple open page stripes US20190121696A1|2019-04-25|Systems and methods for fast access of non-volatile storage devices JP2003208360A|2003-07-25|Write-once memory device including non-volatile memory for temporary storage US10901889B2|2021-01-26|Using hybrid-software/hardware based logical-to-physical address mapping to improve the data write throughput of solid-state data storage devices EP3147811A1|2017-03-29|Storage and retrieval of a message authentication code from an external memory. EP3356945B1|2019-09-04|Computer device provided with processing in memory and narrow access ports EP3274830A1|2018-01-31|Improvement in sending of multimedia streams US10229067B2|2019-03-12|Retrieving and converting offline data US20190012094A1|2019-01-10|Method and system for high-density converged storage via memory bus KR20170104107A|2017-09-14|Object storage system managing error-correction-code-related data in key-value mapping information US20190272212A1|2019-09-05|Supporting multiple page lengths with unique error correction coding via galois field dimension folding US9513990B2|2016-12-06|Memory controller with read unit length module FR2922037A1|2009-04-10|Data i.e. bank data, securing method for e.g. static RAM of programmable electronic circuit in airplane, involves instantiating memory accesses with addresses, and providing read data at output based on result of parity control on read data WO2020250091A1|2020-12-17|Efficient error correction of codewords encoded by binary symmetry-invariant product codes
同族专利:
公开号 | 公开日 CN105302659A|2016-02-03| AU2015203825A1|2016-02-11| CN105302659B|2018-10-26| US9430326B2|2016-08-30| GB201511603D0|2015-08-19| GB2530607A|2016-03-30| DE102015008923A1|2016-02-11| AU2015203825C1|2017-10-19| US20160026525A1|2016-01-28| FR3024271B1|2018-12-07| GB2530607B|2016-08-03| AU2015203825B2|2017-04-06|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 US8418021B2|2009-03-27|2013-04-09|Mediatek Inc.|Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof| US8601352B1|2009-07-30|2013-12-03|Apple Inc.|Efficient LDPC codes| DE112010004863B4|2009-12-17|2019-10-10|International Business Machines Corporation|Data management in solid state storage systems| CN101964205B|2010-09-17|2013-08-07|记忆科技有限公司|ECC module dynamic multiplexing system and method based on solid state disk| KR101712619B1|2011-01-19|2017-03-06|삼성전자주식회사|Encoding and decoding methods for error correction code| KR101725223B1|2011-03-25|2017-04-11|삼성전자 주식회사|Data compressing method of storage device| US20130031301A1|2011-07-29|2013-01-31|Stec, Inc.|Backend organization of stored data| KR20130027253A|2011-09-07|2013-03-15|삼성전자주식회사|Method for compressing data| KR101990971B1|2012-01-30|2019-06-19|삼성전자 주식회사|Memory, memory system, and error checking/correction method for memory| US8650467B1|2012-07-23|2014-02-11|Apple Inc.|Parallel chien search over multiple code words| KR101926608B1|2012-08-27|2018-12-07|삼성전자 주식회사|Hard decision decoding method and low density parity check decoder using method thereof| KR102015121B1|2012-10-17|2019-08-28|삼성전자주식회사|Controller configured to control nonvolatile memory device and operating method of controller| US9203435B2|2013-05-08|2015-12-01|Broadcom Corporation|Multiple size and rate FEC code combination with minimum shortening and maximum combined code rate| US9201728B2|2013-09-12|2015-12-01|Seagate Technology Llc|Memory device with variable code rate|US9520901B2|2014-03-06|2016-12-13|Kabushiki Kaisha Toshiba|Memory controller, memory system, and memory control method| US10283091B2|2014-10-13|2019-05-07|Microsoft Technology Licensing, Llc|Buffer optimization| US10169142B2|2016-07-12|2019-01-01|Futurewei Technologies, Inc.|Generating parity for storage device| TWI695378B|2017-12-15|2020-06-01|群聯電子股份有限公司|Bit tagging method, memory controlling circuit unit and memory storage device| US10817372B2|2018-06-13|2020-10-27|Innogrit Technologies Co., Ltd|Systems and methods for ultra fast ECC with parity| US11010245B2|2018-06-21|2021-05-18|Winbond Electronics Corp.|Memory storage apparatus with dynamic data repair mechanism and method of dynamic data repair thereof| KR20200069110A|2018-12-06|2020-06-16|삼성전자주식회사|Memory system including fpga and method of operation thereof| TWI709850B|2019-01-30|2020-11-11|群聯電子股份有限公司|Data writing method, memory control circuit unit and memory storage device| KR20200117129A|2019-04-03|2020-10-14|삼성전자주식회사|Semiconductor memory device, and memory system having the same| US11144392B1|2020-07-17|2021-10-12|Toshiba Memory Corporation|Payload distribution in solid state drives|
法律状态:
2016-07-21| PLFP| Fee payment|Year of fee payment: 2 | 2017-06-13| PLFP| Fee payment|Year of fee payment: 3 | 2018-05-04| PLSC| Search report ready|Effective date: 20180504 | 2018-06-12| PLFP| Fee payment|Year of fee payment: 4 | 2019-06-19| PLFP| Fee payment|Year of fee payment: 5 | 2020-04-24| TP| Transmission of property|Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., US Effective date: 20200319 | 2020-06-11| PLFP| Fee payment|Year of fee payment: 6 | 2021-06-11| PLFP| Fee payment|Year of fee payment: 7 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US14/338,264|US9430326B2|2014-07-22|2014-07-22|Multiple ECC codeword sizes in an SSD| US14338264|2014-07-22| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|